使用多击操纵器

使用多击操纵器可以使用户在 Kanzi 应用程序中多击或多敲节点。请参阅为节点启用多击手势

使用多击 (Multi Click) 触发器响应多击手势。例如,您可以更改用户多击或多敲节点时的节点外观。请参阅使用多击 (Multi Click) 触发器

多击操纵器是一种输入操纵器,您可以用于在 Kanzi 应用程序中添加手势识别到节点上。您可以通过 Kanzi Engine API 分配输入操纵器。请参阅使用输入操纵器

要为节点启用点击手势,使用点击操纵器。请参阅使用点击操纵器

通过完成教程学习如何使用多击操纵器。请参阅教程:平移、缩放、轻敲

为节点启用多击手势

本节介绍了如何为任意节点启用多击手势。要为按钮 (Button) 节点启用双击,请参阅为按钮 (Button) 节点启用双击手势

要为节点启用多击手势:

  1. Kanzi Studio 中使用应用程序 (Application) 模板创建工程。
  2. 工程 (Project) 中创建要启用多击手势的节点。
    例如,创建 2D 空节点 (Empty Node 2D) 节点,将其命名为 MultiClickNode,并添加内容到该节点。
  3. 工程 (Project) 中选择您在上一步中创建的节点,在属性 (Properties) 中添加可测试命中 (Hit Testable) 属性,并将其设置为启用。
    当您启用属性时,用户能选取节点。
    默认情况下,按钮 (Button)列表框项容器 (List Box Item Container)滚动视图 (Scroll View)滑块 (Slider) 节点启用命中测试。 请参阅定义哪个节点接收用户输入
  4. 工程 (Project)按下 Alt 并右键点击 您创建的节点并选择别名 (Alias)
    Kanzi Studio 会创建一个别名(它指向您从中创建该别名的节点),并将该别名添加到它的含资源字典的最近祖先节点的资源字典中。
    使用 # 符号后跟别名名称访问别名目标节点。
  5. 选择文件 (File) > 导出 (Export) > 导出 KZB (Export KZB)
    Kanzi StudioKanzi Studio 工程创建 kzb 文件和配置文件。Kanzi Studio 将导出的文件存储在 <ProjectName>/Application/bin 目录或您在 工程 (Project) > 属性 (Properties)二进制导出目录 (Binary Export Directory) 属性中指定的位置。Kzb 文件包含 Kanzi Studio 工程中的所有节点和资源,您在本地化表中标记为本地化包的资源除外。
    当您从 Visual Studio 中运行您的 Kanzi 应用程序时,您的应用程序就会加载 kzb 文件和配置文件。
  6. 在 Visual Studio 中打开存储在 <ProjectName>/Application/configs/platforms/win32 中的解决方案,并在实现应用程序逻辑的文件中创建并配置多击操纵器:
    1. 为多击消息定义处理程序。
      例如,在实现应用程序逻辑的类的 public 部分后添加:
      private: 
      
          //为 MultiClickManipulator::MultiClickMessage 消息定义处理程序,该消息来自 
          //具有可生成多击消息的输入操纵器的节点。
          void onNodeMultiClicked(MultiClickManipulator::MultiClickMessageArguments& messageArguments)
          {
              //添加处理多击事件的代码。
          }
    2. onProjectLoaded() 函数中创建 MultiClickManipulator 操纵器并订阅其消息。
      例如,添加:
          virtual void onProjectLoaded() KZ_OVERRIDE
          {
              ScreenSharedPtr screen = getScreen();
              Domain* domain = getDomain();
      
              //使用别名获取MultiClickNode 节点。
              NodeSharedPtr multiClickNode = screen->lookupNode<Node>("#MultiClickNode");
      
              //创建生成多击消息的输入操纵器。
              MultiClickManipulatorSharedPtr multiClickManipulator = MultiClickManipulator::create(domain);
      
              //添加输入操纵器到MultiClickNode 节点。
              multiClickNode->addInputManipulator(multiClickManipulator);
      
              //将预期点击次数设置为三。默认预期点击次数为二。
              //输入操纵器将此点击数识别为多击手势。
              multiClickManipulator->setExpectedClicks(3);
      
              //将多击超时设置为 500 ms。默认超时为 250 ms。
              //如果每次点击之间的时间未超出该值,
              //输入操纵器将这些点击识别为多击手势。
              multiClickManipulator->setTimeout(chrono::milliseconds(500));
      
              //订阅MultiClickNode 节点的 MultiClickManipulator::MultiClickMessage 消息。
              // MultiClickManipulator 操纵器在用户多击节点时生成此消息。
              multiClickNode->addMessageHandler(MultiClickManipulator::MultiClickMessage, bind(&MyProject::onNodeMultiClicked, this, placeholders::_1));
          }
  7. 构建和运行应用程序。 请参阅部署 Kanzi 应用程序
    在应用程序中多击或多次轻敲已启用多击手势的节点。应用程序执行您在处理程序中为 MultiClickMessage 消息定义的行为。

使用多击 (Multi Click) 触发器

使用多击 (Multi Click) 触发器响应多击手势。例如,您可以更改用户多击或多敲节点时的节点外观。

要使用多击 (Multi Click) 触发器:

  1. 为节点启用多击手势。请参阅为节点启用多击手势
  2. 定义您想通过多击 (Multi Click) 触发器设置的行为。
    例如,创建状态机,您可以定义状态以设置节点在多击 (Multi Click) 触发器被反复触发时的外观。请参阅创建状态机
  3. 工程 (Project) 中,选择要为其添加触发器的节点,并在节点组件 (Node Components) > 触发器 (Triggers) 部分添加多击 (Multi Click) 触发器。
  4. 在您在上一步创建的触发器中,点击 触发器设置 (Trigger Settings) 并在 触发器设置编辑器 (Trigger Settings Editor) 中禁用 设置已处理消息 (Set Message Handled) 属性。
    当您禁用 设置已处理消息 (Set Message Handled) 属性,此触发器拦截消息,但不会停止消息。这样您可以让输入操纵器处理该消息。
  5. 在您创建的触发器中,选择 添加 (Add) 下拉菜单中的动作,并配置该动作。
    例如,选择下一状态 (Next State) 动作并在动作设置中设置:
  6. 选择文件 (File) > 导出 (Export) > 导出 KZB (Export KZB)
  7. 构建和运行应用程序。 请参阅部署 Kanzi 应用程序
    在应用程序中多击或多次轻敲已启用多击手势的节点。

在 API 中使用多击操纵器

有关详细信息,请参阅 API reference中的 MultiClickManipulator 类。

另请参阅

教程:平移、缩放、轻敲

处理用户输入

使用点击操纵器

使用长按操纵器

部署 Kanzi 应用程序

使用触发器